package main

import "fmt"

//闭包是一个特殊的匿名函数, 它是匿名函数和相关引用环境组成的一个整体
//+ 也就是说只要匿名函数中用到了外界的变量, 那么这个匿名函数就是一个闭包
//闭包中使用的变量和外界的变量是同一个变量, 所以可以闭包中可以修改外界变量
//只要闭包还在使用外界的变量, 那么外界的变量就会一直存在
func main() {
	num := 0
	a := func() {
		num = num+1
	}

	fmt.Printf("执行闭包前=%d\n", num) //0
	a()
	fmt.Printf("执行闭包后=%d\n", num) //1
}
